iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
AI & Data

然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)系列 第 10

[Day 10] 模型達到商業指標的挑戰 — Test set performance 的殞落

  • 分享至 

  • xImage
  •  

Achieving low average tested error isn't good enough for a project.

前言

昨天談到大部分機器學習專案在產品化前都必須達成三個里程碑,而即使在測試集取得了很好的表現,要達成商業指標這最後一個里程碑時可能還會遇到一些困難,今天就來看看這些程咬金是什麼吧。

達成商業指標的挑戰

不成比例的重要性

現實情況中,不是每個樣本都一樣重要,如果 ML 系統在少數重要程度高到不成比例的樣本表現很差,即使它的平均測試誤差很低,作為產品也是沒有價值的。
以我們每天都在使用的搜尋引擎為例:
web search
其中:

  • 資訊性查詢 (Informational Query) — 指搜尋用戶的目的是為了尋找相關資訊。
  • 交易性查詢 (Transactional Query) — 指搜尋用戶的目的是為了尋找商家購買產品或服務。
  • 導航性查詢 (Navigational Query) — 指尋用戶的目的是為了尋找特定商家或品牌的網址或資料。

對於前兩類查詢只回傳最相關的搜尋結果是可以忍受的,而對於導航性查詢,因為使用者的意圖非常明確,所以沒有回傳正確的結果就會造成使用者對產品失去信心。
可以想像如果我搜尋 Navigational queries 的三個網站時,回傳的第一個連結都不是那些網站,我應該就不會再使用這個搜尋引擎了。
僅僅三次錯誤就讓使用者放棄使用,這就是它們不成比例的重要性!

關鍵子集

有些特徵並不能作為判定的標準,否則會使 ML 系統帶有歧視性,這類特徵就稱為 Protected attributes,而帶有這些特徵的樣本就是 關鍵子集
例如在文章 醫學院用AI面試,竟刷掉數百位優秀女性與少數族裔⋯⋯科技為什麼也會偏心? 提到倫敦的聖喬治醫學院(St. George’s Hospital Medical School)使用電腦程式初步篩選申請者時,偏頗地拒絕了數百名學業成績足以進入面試階段的女性和少數族群,此時"性別"這個特徵就屬於 Pretected attributes,而帶有"女性"這個特徵的樣本就屬於關鍵子集。
或以貸款審核為例,就算平均測試準確度很高,若系統會以種族來判定是否通過貸款,作為產品,是絕對不可以被接受的!!
總的來說,為了保障系統的公正性,必須確保它在某些關鍵子集表現良好。

罕見類別

在分佈高度不均勻的資料中,直接忽略罕見類別或對它們的準確度較低也是不能接受的,特別是在缺陷檢測或醫療的應用上更是如此。
另外要注意,當資料集的分佈極度不均勻時 (Skewed datasets) 準確度無法反映模型的真實表現,常見的解法如下:

  • 改為檢視混淆矩陣,計算 Precision & Recall:
    基本的想法是看看 class A 被分成了 class B 的總次數,矩陣的每一行代表 actual class,每一列則是 predicted class,最完美的矩陣就是只有對角線有值,false positive 跟 false negative 皆為 0。

    • Precision - 預測值為 positive case 的準確性,也就是預測為 positive 且真的為 positive 的比例
    • Recall - 又稱為 sensitivity 或 true positive rate,為對 positive case 預測的正確性,也就是所有的 positive 中預測正確的比例,在瑕疵檢測時,Recall 要盡量高,才不會讓有瑕疵的產品流出。
  • 計算 F1 score:
    計算 Precision 跟 Recall 的調和平均數 (Harmonic mean),不像一般平均值把每個值都視為一樣重要,harmonic mean 會給小的值更高的權重,也就是說 F1 score 要高的話代表 Precision 和 Recall 同時都要很高。

所有指標的定義請見下圖:
Confusion matrix
*圖片來源:YC Chen — 如何辨別機器學習模型的好壞?秒懂Confusion Matrix

這兩個方法不僅限於二元分類,也適用於有多個類別的情況,例如瑕疵檢測時,全部的瑕疵加起來可能資料量還是很少。

以上就是今天的內容,知道一個良好的機器學習產品該達到甚麼標準之後,明天就讓我們來談談啟動 ML 產品專案的小訣竅以及最重要的第一步該怎麼踏出去吧。

參考資料


上一篇
[Day 09] 建立機器學習模型 — Andrew Ng 大神說要這樣做
下一篇
[Day 11] 建立 Baseline — 開啟機器學習專案的第一步
系列文
然後模型就死在 Jupyter Notebook 了 (ಥ﹏ಥ)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言